草庐IT

mysql GRANT + WHERE

全部标签

MySQL 存储过程 : IF in WHERE

我正在尝试以下列方式选择一些数据:SELECTcolumnFROMtableWHEREa=a1AND(b=b1ORb=b2ORb=b3);我想让它做的是如果b不等于b1,检查是否b=b2。但是,如果b=b1,则不检查其他条件。此select语句的结果必须只有一个条目。但是,在Ihaveno语句中,它会检查所有三个条件,有时会返回多行。同样,我希望它停止检查条件是否为真。关于如何实现的任何想法?我试过case但没有成功...提前致谢!编辑这是我尝试运行的实际查询。INSERTINTOshipment_flights(airlinename,flt_no,flt_date,destinat

php - 在mysql中用where子句添加时间差

我有一个包含数十万行的数据表,这些行代表对服务器获取数据的请求。每条记录都有时间戳、服务器ID和服务器是否正确响应的二进制值(tinyint)。查询时间不是常数。我试图通过将服务器在线的查询之间的时间相加(非常优选mysql查询)来获得服务器被视为“在线”的总时间。例如。server|time|status1|1/1/201211:00online1|1/1/201211:02online1|1/1/201211:05offline2|1/1/201211:10online1|1/1/201211:30onlineTimenow:11:40Server1OnlineTime=2+3+1

MySql Select 查询返回记录,当 WHERE 条件不为真时

MySQL查询返回一条记录,即使条件不满足也是如此。SELECT*FROM`orders`WHEREorder_id='10000R'没有符合此处给出的WHERE条件的记录。但是MySQl返回一条order_id=10000的记录看起来WHERE条件忽略了引号内的alpha。如果查询有任何错误或者这是MySql错误,请帮助我 最佳答案 我假设order_id是一个int,并且MySql正在隐式转换varchar'10000R'以匹配数据类型列的尾部'r'。请参阅MySql文档中的“TypeConversioninExpression

mysql - 优化where语句MYSQL

我正在编写这个复杂的查询以返回一个大型数据集,大约有100,000条记录。在我将此OR语句添加到WHERE子句之前,查询运行良好:AND(responses.StrategyFk=strategies.IdOrresponses.StrategyFkISNull)现在我明白了,将or语句放在那里会增加很多开销。没有那个声明,只是:ANDresponses.StrategyFk=strategies.Id查询在15秒内运行,但不会返回任何没有fk链接策略的记录。虽然我也想要这些唱片。有没有更简单的方法可以通过简单的where语句找到这两条记录?我不能只为空记录添加另一个AND语句,因为那

mysql - 如果where子句是唯一索引列,mysql在找到第一个结果后会做什么

SELECTidFROMmytableWHERElogin='Jhon'ANDpassword='123'login列有唯一索引,password没有索引。找到第一个结果后,mysql会不会停止执行? 最佳答案 SELECTidFROMmytableWHERElogin='Jhon'ANDpassword='123'没关系,因为您是在UNIQUECONSTRAINT/INDEX上过滤,所以不需要限制。顺便说一句,不要在数据库中存储纯文本密码。如果login是唯一索引,查询将在找到“Jhon”后停止搜索索引b-tree。因为您有登录名

mysql - 这可以在一个查询中吗 : SELECT x as y1 WHERE y = 1 and SELECT x as y2 WHERE y = 2?

给定一个表格idxy--------5200153000252243613516222226163我可以用得到所有y=1的x值SELECTxasy1WHEREy=1我可以用得到y=2的所有x值SELECTxasy2WHEREy=2但我想在一个查询中选择这些,这样我会得到类似的结果idy1y2--------5200300061352222这可以在一个查询中完成吗?我已经尝试了几乎所有我能想到的变体,但都是错误。 最佳答案 MySQL没有像SQLServer一样的PIVOT函数。但是您仍然可以使用MAX()和CASE()来模拟它,以连

mysql - 如何在 WHERE CLAUSE 中使用 DISTINCT 来避免重复行返回

此SQL查询的结果应返回一组6行。SELECTbaseFeeds.siteURL,feedFinishes.timeTaken,feedFinishes.timeSubmittedFROMfeedFinishesLEFTOUTERJOINbaseFeedsONfeedFinishes.GUID=baseFeeds.GUIDWHEREfeedFinishes.nowDate=baseFeeds.nowDateANDbaseFeeds.siteURLLIKE'%www.example.com%'目前它返回18行,正确的6行被重复3次。我认为解决这个问题的方法是使用另一个类似于以下内容的WH

mysql - 在 where 子句中使用 OR 优化 sql 语句

在5Gb大小的消息表上运行此查询。问题是执行时间>3分钟。SELECTm.idFROMmessagesmLEFTJOINdialogdonm.id=d.midWHERE(SELECTcount(*)FROMdialogWHERE(m.from_id=uid1andm.user_id=uid2)OR(m.from_id=uid2andm.user_id=uid1))=0&&read_state=0LIMIT100我明白,通过NESTEDSELECTINWHERECLAUSE搜索是一种不好的做法,但还没有找到另一种选择此类行的方法。尝试将OR拆分为2个UNION语句,但它也很长。消息表结构

ORDER BY 的 MySQL 索引,日期范围在 WHERE

假设您有一个包含以下列的表:iddatecol1我希望能够使用特定的ID和日期查询此表,并按另一列排序。例如,SELECT*FROMTABLEWHEREid=?ANDdate>?ORDERBYcol1DESC根据thisrange文档,索引在遇到>运算符后将停止使用。但是根据this按文档排序,如果索引按索引中的最后一列排序,则索引只能用于优化orderby子句。是否可以对该查询的每个部分进行索引查找,或者您只能获得3个中的2个?我能做得比index(id,date)更好吗? 最佳答案 计划A:INDEX(id,date)--如果它

java - 如何在 Hibernate Where 子句中使用 CASE WHEN

请给出在HQL中使用CASEWHEN的例子。我在我的代码中使用了以下查询。intreceiptNumber=100;Stringhql="SELECTbFROMOOPExtractasb"+"WHERE"+"b.tranStatId="+receiptNumber+"AND"+"b.orderTypeIN('EMERGENCY','PLENARY','PETITION','EXTENSION','MOTION')AND"+"CASEWHENb.orderType=='MOTION'"`entercodehere`+"THEN"+"b.status='MOTION_SIGNED'"+"E